# sorted(iter)           ：对可迭代对象进行排序
# reversed(sequence)     ：反转序列生成新的迭代器对象
# zip(iter1,iter2)       ：将iter1与iter2打包成元组并返回一个可迭代的zip对象
# enumerate(iter)        ：根据iter对象创建一个enumerate对象
# all(iter)              ：判断可迭代对象iter中所有元素的布尔值是否都为True
# any(iter)              : 判断可迭代对象iter是否有任意一个为True
# next(iter)             ：获取迭代器的下一个元素
# filter(function,iter)  ：通过指定条件过滤序列并返回一个迭代器对象
# map(function,iter)     ：通过函数function对可迭代对象iter的操作返回一个迭代器对象


#################################### 排序-sorted
list1=[53,12,2354,3,53,546,43]
asc_list=sorted(list1)
desc_list=sorted(list1,reverse=True)
print(asc_list)
print(desc_list)

#################################### 反转序列-reversed
print('-'*50)

s=reversed('hello world')
# 输出<reversed object at 0x000001DC0916D480>
print(s)
# 需要转换成list
print(list(s))


#################################### zip
print('-'*50)

x=['a','b','c']
y=[10,20,30]
zipped=zip(x,y)
# <class 'zip'>
print(type(zipped))
# 同样需要转换成对应类型,可以是字典，也可以是数组
print(dict(zipped))

#################################### enumerate
print('-'*50)

enum=enumerate(y,start=1)
print(type(enum))
print(tuple(enum))


#################################### all-所有的都为True，则输出True
print('-'*50)

list2=[10,20,'',30]
# 输出true
print(all(list1))
# 输出false
print(all(list2))


#################################### any-任意一个为True，则输出True。
print('-'*50)

# 输出True
print(any(list1))
# 输出True
print(any(list2))

#################################### next
# list3=[901,902,903]
# t1=tuple(list3)
# print(next(t1))
# print(next(t1))
# print(next(t1))
# print(next(t1))


#################################### filter 通过指定条件过滤序列并返回一个迭代器对象
print('-'*50)

def fun(num):
    return num&2==0
obj = filter(fun,range(10))
# 输出 <class 'filter'>
print(type(obj))
print(list(obj))

#################################### map 通过函数function对可迭代对象iter的操作返回一个迭代器对象
print('-'*50)

def upper(x):
    return x.upper()

list3=['java','python','sql']
obj=map(upper,list3)
# 输出<class 'map'>
print(type(obj))
print(list(obj))